An Application Program Interface (API) is a programming language format used by an application program to communicate with an operating system or other control programs such as a database management system (DBMS) or communications protocol. An API typically includes a library of components such as routines, protocols and tools for building software applications. The components may be software functions and processes such as executable code or scripts. In the case of “Web APIs”, the APIs may be exposed over a network such as in a web page or desktop application that access API over the Internet. Most operating environments such as Windows, Unix, Linux, or like systems provide API components so that developers can run and execute applications consistent with the operating environment.
APIs allow developers to create application software (i.e. an “app”) which can communicate directly with a particular operating system or computer platform by integrating functions from the operation system's API library into the application software. The term app can refer to mobile applications that utilize APIs. Developers may implement apps in various programming languages using various platforms. Therefore, APIs enable app developers to easily access and reuse application logic built by other developers.
More recently, developers may use a software development kit (SDK or devkit) to build applications and APIs for operating systems and/or platforms. An API proxy may be a type of application that runs on a SDK acting as a means for communicating between servers and one more web APIs, generic HTTP services, or applications. Such a proxy can be implemented as a set of configuration files and software code which rely on resources provided by the SDK.
In addition, web based APIs may be provided to developers in order to integrate services between two or more HTTP enabled services. These combined services may be referred to as a “mashup.” For example, Housingmaps.com is a mashup that applies real estate information, such as apartments for rent or homes for sale from craigslist.com to Google Maps. The mashup results in a system that allows the user to sort apartments and homes by price and location onto an interactive map, allowing for efficient browsing of housing options.
One issue with present approaches to gathering and analyzing API information is that there lacks a sufficient way to monitor and analyze API traffic for unexpected changes or irregularities, e.g. spikes or drops, that flow through APIs. Tracking such changes of when and how API traffic changes allows API developers and providers to react to unplanned changes in traffic and take corrective actions to improve APIs and make better decisions related to API programs. It is therefore desirable to offer a system for monitoring and regulating unexpected anomalies in API traffic in a manner that provides useful knowledge of API performance to developers and API providers.